// NjtUserServiceImpl.java (已存在，修改updateUser方法)
package com.ruoyi.nongjt.service.impl;

import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.nongjt.domain.pojo.NjtUser;
import com.ruoyi.nongjt.mapper.NjtUserMapper;
import com.ruoyi.nongjt.service.NjtUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
public class NjtUserServiceImpl implements NjtUserService {

    @Autowired
    private NjtUserMapper userMapper;

    @Override
    public List<NjtUser> selectUserList(NjtUser user) {
        return userMapper.selectUserList(user);
    }

    @Override
    public NjtUser selectUserById(Long id) {
        return userMapper.selectUserById(id);
    }
    // NjtUserServiceImpl.java 中的 insertUser 方法
//    @Override
//    public int insertUser(NjtUser user) {
//        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
//        user.setCreateTime(new Date());
//        user.setUpdateTime(new Date());
//        user.setCreateBy(SecurityUtils.getUsername());
//        user.setUpdateBy(SecurityUtils.getUsername());
//
//        // 设置信息完善状态
//        if (user.getProvince() != null && !user.getProvince().isEmpty() &&
//                user.getCity() != null && !user.getCity().isEmpty() &&
//                user.getDistrict() != null && !user.getDistrict().isEmpty()) {
//            user.setPerfectFlag("1");
//            // 根据省市区自动分配单位
//            Long organizationId = userMapper.selectOrganizationIdByAddress(
//                    user.getProvince(),
//                    user.getCity(),
//                    user.getDistrict());
//            if (organizationId != null) {
//                user.setOrganizationId(organizationId);
//            }
//        } else {
//            user.setPerfectFlag("0");
//        }
//
//        return userMapper.insertUser(user);
//    }
    @Override
    public int insertUser(NjtUser user) {
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        user.setCreateTime(new Date());
        user.setUpdateTime(new Date());
        user.setCreateBy(SecurityUtils.getUsername());
        user.setUpdateBy(SecurityUtils.getUsername());

        // 设置信息完善状态
        if (user.getProvinceId() != null && user.getCityId() != null && user.getDistrictId() != null) {
            user.setPerfectFlag("1");
            // 根据省市区自动分配单位
//            Long organizationId = userMapper.selectOrganizationIdByAddress(
//                    user.getProvinceId().toString(),
//                    user.getCityId().toString(),
//                    user.getDistrictId().toString());
            // 使用Integer类型直接传递ID，无需转换为字符串
            Long organizationId = userMapper.selectOrganizationIdByAddress(
                    user.getProvinceId(),
                    user.getCityId(),
                    user.getDistrictId());

            if (organizationId != null) {
                user.setOrganizationId(organizationId);
            }
        } else {
            user.setPerfectFlag("0");
        }

        return userMapper.insertUser(user);
    }

//    @Override
//    public int insertUser(NjtUser user) {
//        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
//        user.setCreateTime(new Date());
//        user.setUpdateTime(new Date());
//        user.setCreateBy(SecurityUtils.getUsername());
//        user.setUpdateBy(SecurityUtils.getUsername());
//
//        // 设置信息完善状态
//        if (user.getProvince() != null && user.getCity() != null && user.getDistrict() != null) {
//            user.setPerfectFlag("1");
//            // 根据省市区自动分配单位
//            Long organizationId = userMapper.selectOrganizationIdByAddress(
//                    user.getProvince().toString(),
//                    user.getCity().toString(),
//                    user.getDistrict().toString());
//            if (organizationId != null) {
//                user.setOrganizationId(organizationId);
//            }
//        } else {
//            user.setPerfectFlag("0");
//        }
//
//        return userMapper.insertUser(user);
//    }

//    @Override
//    public int updateUser(NjtUser user) {
//        user.setUpdateTime(new Date());
//        user.setUpdateBy(SecurityUtils.getUsername());
//
//        // 检查省市区信息是否完善
//        if (user.getProvince() != null && !user.getProvince().isEmpty() &&
//                user.getCity() != null && !user.getCity().isEmpty() &&
//                user.getDistrict() != null && !user.getDistrict().isEmpty()) {
//            user.setPerfectFlag("1");
//            // 根据省市区自动分配单位
//            Long organizationId = userMapper.selectOrganizationIdByAddress(
//                    user.getProvince(), user.getCity(), user.getDistrict());
//            if (organizationId != null) {
//                user.setOrganizationId(organizationId);
//            }
//        } else {
//            user.setPerfectFlag("0");
//        }
//
//        return userMapper.updateUser(user);
//    }
@Override
public int updateUser(NjtUser user) {
    user.setUpdateTime(new Date());
    user.setUpdateBy(SecurityUtils.getUsername());

    // 检查省市区信息是否完善
    if (user.getProvinceId() != null && user.getCityId() != null && user.getDistrictId() != null) {
        user.setPerfectFlag("1");
        // 根据省市区自动分配单位
        Long organizationId = userMapper.selectOrganizationIdByAddress(
//                user.getProvinceId().toString(),
//                user.getCityId().toString(),
//                user.getDistrictId().toString());
                // 使用Integer类型直接传递ID，无需转换为字符串
                        user.getProvinceId(),
                        user.getCityId(),
                        user.getDistrictId());

        if (organizationId != null) {
            user.setOrganizationId(organizationId);
        }
    } else {
        user.setPerfectFlag("0");
    }

    return userMapper.updateUser(user);
}

    @Override
    public int deleteUserById(Long id) {
        return userMapper.deleteUserById(id);
    }

    @Override
    public NjtUser selectUserByMobilePhone(String mobilePhone) {
        return userMapper.selectUserByMobilePhone(mobilePhone);
    }
}
